//package com.example.demo;
//
//import javassist.ClassPool;
//import javassist.CtClass;
//import javassist.CtMethod;
//import javassist.CtNewMethod;
//import org.junit.jupiter.api.Test;
//
//public class AopInteceptor {
//
//    public static void before() {
//        System.out.println(".......before().......");
//    }
//
//    public static void after() {
//        System.out.println(".......after().......");
//    }
//
//
//    @Test
//    public void updateGetUserInfoMethod() throws Exception {
//        ClassPool pool = new ClassPool();
//        pool.appendSystemPath();
//        // 定义类
//        CtClass userServiceClass = pool.get("com.example.demo.StudentServiceImpl");
//        // 需要修改的方法
//        CtMethod method = userServiceClass.getDeclaredMethod("print");
//        // 修改原有的方法
//        method.setName("getUserInfo$agent");
//        // 创建新的方法，复制原来的方法
//        CtMethod newMethod = CtNewMethod.copy(method, "print", userServiceClass, null);
//        // 注入的代码
//        StringBuffer body = new StringBuffer();
//
//        body.append("{\nlong start = System.currentTimeMillis();\n");
//        // 调用原有代码，类似于method();($$)表示所有的参数
//        body.append("getUserInfo$agent($$);\n");
//        body.append("System.out.println(\" take \" +\n (System.currentTimeMillis()-start) + " + "\" ms.\");\n");
//
//        body.append("}");
//        newMethod.setBody(body.toString());
//        // 增加新方法
//        userServiceClass.addMethod(newMethod);
//
//        StudentServiceImpl userServiceImpl = (StudentServiceImpl) userServiceClass.toClass().newInstance();
//        userServiceImpl.print("hello----------");
//    }
//
//
//
//
//
//}